📘 خلاصه کامل فصل هفتم · مدیریت کاربران، زمان، لاگ‌ها و ایمیل ویژه امتحان
📅 تاریخ: شهریور ۱۴۰۵ 👤 تهیه شده توسط Ya3in.ir 🐧 Debian · Red Hat

▍ ۱. مدیریت کاربران و گروه‌ها

🔑 چرا کاربر اضافه می‌کنیم؟
  • به اشتراک‌گذاری دسترسی بدون نیاز به root
  • افزایش امنیت (از root برای کارهای روزمره استفاده نکنید)
  • مدیریت بهتر و ردیابی فعالیت‌ها
دلیل اصلی اضافه کردن کاربر: جلوگیری از استفاده مستقیم از root و افزایش امنیت.

🔸 فایل‌های مهم کاربران

پارامترهای مهم /etc/login.defs: PASS_MAX_DAYS (انقضای رمز)، PASS_MIN_LENGTH (حداقل طول)، PASS_WARN_AGE (هشدار قبل از انقضا)

🔸 دستورات اصلی مدیریت کاربران

دستورکاربرد
useradd usernameایجاد کاربر جدید
useradd -Dمشاهده تنظیمات پیش‌فرض useradd
passwd usernameتنظیم/تغییر رمز عبور
passwd -l usernameلاک کردن کاربر
passwd -u usernameآزاد کردن کاربر
passwd -d usernameحذف رمز (خطرناک! حتماً لاک کنید)
passwd -S usernameنمایش وضعیت رمز عبور
usermod -aG group usernameاضافه کردن کاربر به گروه ثانویه
usermod -s /bin/bash usernameتغییر شل پیش‌فرض
userdel -r usernameحذف کاربر با دایرکتوری خانه
groupadd groupnameایجاد گروه جدید

▍ ۲. تشخیص لاک شدن کاربر (علامت ! در کجاست؟)

👀 علامت تعجب (!) در کجای سیستم نشان‌دهنده لاک شدن کاربر است؟

در فایل /etc/shadow، اگر در ابتدای فیلد دوم (فیلد رمز عبور) علامت ! یا !! قرار داشته باشد، یعنی کاربر لاک (قفل) شده است و نمی‌تواند با رمز عبور وارد سیستم شود.

نکته امتحانی: علامت ! در ابتدای فیلد دوم فایل /etc/shadow قرار می‌گیرد.

🔸 روش‌های تشخیص لاک بودن کاربر

روشدستورخروجی در صورت لاک بودن
دستور مخصوص (ساده‌ترین) sudo passwd -S username username L ... (حرف L نشان‌دهنده Locked است)
مشاهده مستقیم فایل sudo grep username /etc/shadow فیلد دوم با ! شروع می‌شود: username:!:...
✅ خلاصه تشخیص لاک:
  • passwd -S → اگر خروجی شامل L بود، کاربر لاک است.
  • /etc/shadow → اگر فیلد رمز با ! شروع می‌شد، کاربر لاک است.
  • دستور لاک کردن: sudo passwd -l username
  • دستور آزاد کردن: sudo passwd -u username
نکته: اگر رمز کاربر با * شروع شود، یعنی کاربر هرگز رمز عبور نداشته یا سرویس‌دهی غیرفعال است (مثل کاربران سیستمی). اگر فیلد رمز خالی باشد، کاربر بدون رمز عبور است (بسیار خطرناک!).

▍ ۳. پیاده‌سازی su و sudo

🔴 su

  • نیاز به رمز root
  • همه دستورات با دسترسی root
  • لاگ دقیق ندارد
  • su - محیط کاربر را هم تغییر می‌دهد

🔵 sudo

  • نیاز به رمز خود کاربر
  • فقط دستور مشخص با دسترسی root
  • لاگ در /var/log/auth.log
  • sudo -l → لیست دستورات مجاز
تفاوت اصلی: su نیاز به رمز root دارد و همه دستورات را با root اجرا می‌کند، اما sudo نیاز به رمز خود کاربر دارد و فقط دستورات مشخص را اجرا می‌کند.

🔸 فایل /etc/sudoers (با visudo ویرایش کنید)

نکته: NOPASSWD برای اسکریپت‌های خودکار مفید است اما امنیت را کاهش می‌دهد.

▍ ۴. Mail Transfer Agent (MTA)

📧 ساختار ایمیل در لینوکس:
  • MTA (Mail Transfer Agent): ارسال و دریافت بین سرورها (Postfix, Sendmail, Exim)
  • MDA (Mail Delivery Agent): تحویل به صندوق کاربر (Procmail)
  • MUA (Mail User Agent): برنامه کاربر برای خواندن/نوشتن (Thunderbird, mail, s-nail)

🔸 نصب Postfix (MTA محبوب)

└─$ sudo apt install postfix # دبیان
└─$ sudo dnf install postfix # رد هت
└─$ sudo systemctl enable --now postfix

🔸 s-nail (MUA خط فرمان مدرن)

نسخه مدرن mailx با پشتیبانی از SMTP، SSL و احراز هویت.

└─$ sudo apt install s-nail # دبیان
└─$ sudo dnf install s-nail # رد هت

🔸 تنظیمات ~/.mailrc برای ارسال ایمیل خارجی

set smtp=smtps://smtp.gmail.com:465 set smtp-auth=login set smtp-auth-user=your_email@gmail.com set smtp-auth-password=your_app_password set from=your_email@gmail.com
⚠️ هشدار امنیتی! از رمز عبور مخصوص برنامه (App Password) استفاده کنید، نه رمز اصلی.

🔸 ارسال ایمیل با s-nail

-a در s-nail برای پیوست (Attachment) است.

▍ ۵. مدیریت لاگ‌ها (Logging)

🔸 تفاوت Process و Daemon

🔸 سه دسته اصلی لاگ

🔸 syslog Facilities مهم

🔸 logrotate (چرخش خودکار لاگ‌ها)

🔸 journalctl (مشاهده لاگ‌های systemd)

گزینهکاربرد
journalctlنمایش همه لاگ‌ها
journalctl -u serviceلاگ یک سرویس خاص
journalctl -n 10 -r۱۰ لاگ آخر به ترتیب معکوس
journalctl -p errفقط خطاها و بالاتر
journalctl --since "today"از امروز
journalctl --disk-usageمیزان فضای اشغال‌شده
journalctl --vacuum-size=300Mکاهش به ۳۰۰ مگابایت
مدیریت فضای journal: --vacuum-size و --vacuum-time

▍ ۶. مدیریت زمان در لینوکس

🕐 مبداء زمان (Epoch): January 1, 1970

🔸 دو نوع زمان

🔸 دستورات مهم زمان

دستورکاربرد
dateنمایش زمان سیستمی
date +%sتعداد ثانیه از Epoch
hwclockنمایش زمان سخت‌افاری
hwclock --systohcذخیره زمان سیستمی در سخت‌افزار
hwclock --hctosysخواندن از سخت‌افزار و تنظیم سیستم
timedatectlمدیریت جامع زمان و NTP
timedatectl set-timezone Asia/Tehranتنظیم منطقه زمانی
timedatectl set-ntp trueفعال‌سازی NTP
نکات کلیدی زمان:
  • datetime (time اندازه‌گیری زمان اجراست)
  • hwclock نیاز به sudo دارد
  • timedatectl روش مدرن‌تر از hwclock است
  • روش قدیمی تنظیم timezone: ln -sf /usr/share/zoneinfo/Asia/Tehran /etc/localtime

▍ جمع‌بندی نهایی برای امتحان

📌 نکات طلایی فصل هفتم:
  • مدیریت کاربران: useradd, passwd, usermod, userdel -r
  • فایل‌های مهم: /etc/passwd, /etc/shadow, /etc/group, /etc/login.defs
  • لاک کردن کاربر: passwd -l | آزاد کردن: passwd -u
  • علامت ! در کجاست؟ ابتدای فیلد دوم در /etc/shadow
  • تشخیص لاک: passwd -S (خروجی با L) یا grep /etc/shadow
  • sudo vs su: sudo امن‌تر است و لاگ دارد
  • sudoers: با visudo ویرایش کنید
  • MTA: Postfix (مدرن) جایگزین Sendmail
  • MUA: s-nail (خط فرمان) و mail
  • لاگ‌ها: syslog (rsyslog) و journal (systemd)
  • journalctl: -u (سرویس)، -n (تعداد)، -r (معکوس)، -p (اولویت)
  • زمان: Epoch = 1970/01/01، hwclock (سخت‌افار)، timedatectl (سیستمی)
  • NTP: هماهنگ‌سازی زمان با timedatectl set-ntp true
← بازگشت به فهرست